Fix 'dired-movement-style' in Dired when subdirs are shown
authorEli Zaretskii <eliz@gnu.org>
Thu, 13 Mar 2025 10:34:23 +0000 (12:34 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 13 Mar 2025 10:34:23 +0000 (12:34 +0200)
* lisp/dired.el (dired--move-to-next-line): Don't consider
sub-directory lines as empty.  (Bug#76596)

lisp/dired.el

index 90d944c5dd49e9915d48881c1ac890160795b9cd..17c8ba5f123aeec44de34c8047df39ffecd4f842 100644 (file)
@@ -2888,15 +2888,19 @@ is controlled by `dired-movement-style'."
           (setq wrapped t))
          ;; `bounded': go back to the last non-empty line.
          (dired-movement-style ; Either 'bounded or anything else non-nil.
-          (while (and (dired-between-files) (not (zerop arg)))
+          (while (and (dired-between-files)
+                      (not (dired-get-subdir))
+                      (not (zerop arg)))
             (funcall jumpfun (- moving-down))
             ;; Point not moving means infinite loop.
             (if (= old-position (point))
                 (setq arg 0)
               (setq old-position (point))))
           ;; Encountered a boundary, so let's stop movement.
-          (setq arg (if (dired-between-files) 0 moving-down)))))
-      (unless (dired-between-files)
+          (setq arg (if (and (dired-between-files)
+                             (not (dired-get-subdir)))
+                        0 moving-down)))))
+      (unless (and (dired-between-files) (not (dired-get-subdir)))
         ;; Has moved to a non-empty line.  This movement does
         ;; make sense.
         (cl-decf arg moving-down))